package apps.makarov.com.whereismycurrency.modules;
import android.app.Application;
import android.util.Log;
import com.facebook.stetho.okhttp.StethoInterceptor;
import com.squareup.okhttp.Cache;
import com.squareup.okhttp.OkHttpClient;
import java.io.File;
import javax.inject.Singleton;
import apps.makarov.com.whereismycurrency.BuildConfig;
import apps.makarov.com.whereismycurrency.repository.IRepository;
import apps.makarov.com.whereismycurrency.repository.realm.RealmRepository;
import apps.makarov.com.whereismycurrency.net.WimcService;
import apps.makarov.com.whereismycurrency.net.WimcServiceImpl;
import dagger.Module;
import dagger.Provides;
/**
* Created by makarov on 26/06/15.
*/
@Module(
complete = false,
library = true
)
public final class ApiModule {
public static final String TAG = ApiModule.class.getSimpleName();
public static final int DISK_CACHE_SIZE = 50 * 1024 * 1024;
@Provides
@Singleton
public OkHttpClient provideOkHttpClient(Application application) {
return createOkHttpClient(application);
}
@Provides
@Singleton
public IRepository provideIStore(Application application) {
return new RealmRepository(application);
}
@Provides
@Singleton
public WimcService provideGMHService(OkHttpClient client, IRepository store) {
return new WimcServiceImpl(client, store);
}
private static OkHttpClient createOkHttpClient(Application application) {
final OkHttpClient temporaryClient = new OkHttpClient();
temporaryClient.networkInterceptors().add(new StethoInterceptor());
try {
File cacheDirectory = application.getCacheDir();
Cache cache = new Cache(cacheDirectory, DISK_CACHE_SIZE);
temporaryClient.setCache(cache);
} catch (Exception e) {
if (BuildConfig.DEBUG) {
Log.e(TAG, "Unable to initialize OkHttpClient with disk cache.");
}
}
return temporaryClient;
}
}